package executeQuery;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCSelect {
    public static void main(String[] args) throws SQLException {
        // 1. 创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java107?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("1111");

        // 2. 建立连接
        Connection connection = dataSource.getConnection();

        // 3. 构造 SQL
        String sql = "select * from student where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,2);

        // 4. 执行 SQL
        //  返回结果是一个 ResultSet 结果集. 里面是一个"表"这样的数据结构
        //  一个表里有很多行,每一行有很多列
        ResultSet resultSet = statement.executeQuery();

        // 5. 遍历结果集合
        while(resultSet.next()) {
            // 每次循环, 就能得到 resultSet 中的一行, 进一步就可一拿到每一列
            String id = resultSet.getString("id");
            String name = resultSet.getString("name");

            //也可以用下标(从1开始) 来表示, 不过需注意每一行的 列数.  但还是优先选择列名
            //String id = resultSet.getString(1);
            //String name = resultSet.getString(2);

            System.out.println("id = " + id + ", name = " + name);
        }

        // 5. 关闭释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}
